<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
    <script src="../vue.js/vue.js"></script>
  </head>

  <body>
    <div id="app">
      <div id="todo-list-example">
        <form v-on:submit.prevent="addNewTodo">
          <label for="new-todo">Add a todo</label>
          <input
            v-model="newTodoText"
            id="new-todo"
            placeholder="E.g. Feed the cat"
          />
          <button>Add</button>
        </form>
        <ul>
          <li
            is="todo-item"
            v-for="(todo, index) in todos"
            v-bind:key="todo.id"
            v-bind:title="todo.title"
            v-on:remove="todos.splice(index, 1)"
          ></li>
        </ul>
      </div>
    </div>

    <script>
      Vue.component("todo-item", {
        template: `<li>
            {{ title }}
            <button v-on:click="$emit('remove')">Remove</button>
          </li>`,
        props: ["title"],
      });

      new Vue({
        el: "#todo-list-example",
        data: {
          newTodoText: "",
          todos: [
            {
              id: 1,
              title: "Do the dishes",
            },
            {
              id: 2,
              title: "Take out the trash",
            },
            {
              id: 3,
              title: "Mow the lawn",
            },
          ],
          nextTodoId: 4,
        },
        methods: {
          addNewTodo: function () {
            this.todos.push({
              id: this.nextTodoId++,
              title: this.newTodoText,
            });
            this.newTodoText = "";
          },
        },
      });
    </script>
  </body>
</html>
